home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr46 / acm_rand.zip / RAND32.C < prev    next >
C/C++ Source or Header  |  1993-01-16  |  626b  |  34 lines

  1. #include "rand32.h"
  2.  
  3. long _s32r1 = 0L;
  4. long _s32r2 = 0L;
  5.  
  6. void srand32(long s1, long s2)
  7. {
  8.     _s32r1 = (s1 % 2147483562L) + 1;
  9.     _s32r2 = (s2 % 2147483398L) + 1;
  10. }
  11.  
  12. long rand32(void)
  13. {
  14.     register long z, k;
  15.  
  16.     k = _s32r1 / 53668L;
  17.     _s32r1 = (40014L * (_s32r1 - (k * 53668L))) - (k * 12211L);
  18.     if (_s32r1 < 0L)
  19.         _s32r1 += 2147483563L;
  20.     k = _s32r2 / 52774L;
  21.     _s32r2 = (40692L * (_s32r2 - (k * 52774L))) - (k * 3791L);
  22.     if (_s32r2 < 0L)
  23.         _s32r2 += 2147483399L;
  24.     z = _s32r1 - _s32r2;
  25.     if (z < 1L)
  26.         z += 2147483562L;
  27.     return z;
  28. }
  29.  
  30. double rand32u(void)
  31. {
  32.     return ((double) rand32() * 4.656613e-10);
  33. }
  34.